home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TeX 1995 July
/
TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO
/
dviware
/
kane
/
checkpage.h
< prev
next >
Wrap
Text File
|
1990-10-01
|
4KB
|
200 lines
Date: 20-MAR-1989 17:21:05 GMT
From: PHYOKANE@CS8700.UCG.IE
To: abbottp@ASTON.AC.UK
Subject: file checkpage.h
sender: hea"phyokane@cs8700.ucg.ie" <phyokane@cs8700.ucg.ie>
/* -*-C-*- checkpage.h */
/*-->checkpage*/
/**********************************************************************/
/***************************** checkpage ******************************/
/**********************************************************************/
void
checkpage(bytepos) /* check page whose BOP is at bytepos */
long bytepos;
{
register BYTE command; /* current command */
register INT16 i; /* command parameter; loop index */
char tc; /* temporary character */
INT32 k; /* temporary parameter */
INT16 page_number; /* TeX's \count0 parameter */
BOOLEAN seen_bop; /* flag for noting processing of BOP */
/***********************************************************************
Check all commands between the BOP at bytepos and the next EOP, downloading
any characters not already loaded.
***********************************************************************/
seen_bop = FALSE; /* this is first time through */
(void) FSEEK(dvifp,bytepos,0); /* start at the desired position */
for (;;) /* "infinite" loop - exits when POST or second BOP met */
{
command = (BYTE)nosignex(dvifp,(BYTE)1);
switch (command)
{
case SET1:
case SET2:
case SET3:
case SET4:
(void)checkchldd((BYTE)nosignex(dvifp,(BYTE)(command-SET1+1)));
break;
case SET_RULE:
(void) nosignex(dvifp,(BYTE)4);
(void) nosignex(dvifp,(BYTE)4);
break;
case PUT1:
case PUT2:
case PUT3:
case PUT4:
(void)checkchldd((BYTE)nosignex(dvifp,(BYTE)(command-PUT1+1)));
break;
case PUT_RULE:
(void) nosignex(dvifp,(BYTE)4);
(void) nosignex(dvifp,(BYTE)4);
break;
case NOP:
break;
case BOP:
if (seen_bop)
return; /* we have been here already */
seen_bop = TRUE;
for (i=0; i<=9; i++)
(void)(INT32)signex(dvifp,(BYTE)4);
if (!quiet)
(void)fprintf(stderr,"*");
(void) nosignex(dvifp,(BYTE)4); /* skip prev. page ptr */
(void)bopact();
fontptr = (struct font_entry*)NULL;
break;
case EOP:
return;
case PUSH:
break;
case POP:
break;
case RIGHT1:
case RIGHT2:
case RIGHT3:
case RIGHT4:
(void)signex(dvifp,(BYTE)(command-RIGHT1+1));
break;
case W0:
break;
case W1:
case W2:
case W3:
case W4:
(void)signex(dvifp,(BYTE)(command-W1+1));
break;
case X0:
break;
case X1:
case X2:
case X3:
case X4:
(void)signex(dvifp,(BYTE)(command-X1+1));
break;
case DOWN1:
case DOWN2:
case DOWN3:
case DOWN4:
(void)signex(dvifp,(BYTE)(command-DOWN1+1));
break;
case Y0:
break;
case Y1:
case Y2:
case Y3:
case Y4:
(void)signex(dvifp,(BYTE)(command-Y1+1));
break;
case Z0:
break;
case Z1:
case Z2:
case Z3:
case Z4:
(void) signex(dvifp,(BYTE)(command-Z1+1));
break;
case FNT1:
case FNT2:
case FNT3:
case FNT4:
(void)setfntnm((INT32)nosignex(dvifp,
(BYTE)(command-FNT1+1)));
break;
case XXX1:
case XXX2:
case XXX3:
case XXX4:
k = (INT32)nosignex(dvifp,(BYTE)(command-XXX1+1));
while (k--)
{
(void)nosignex(dvifp,(BYTE)1);
}
break;
case FNT_DEF1:
case FNT_DEF2:
case FNT_DEF3:
case FNT_DEF4:
if (preload)
(void)skipfont ((INT32) nosignex(dvifp,
(BYTE)(command-FNT_DEF1+1)));
else
(void)readfont ((INT32) nosignex(dvifp,
(BYTE)(command-FNT_DEF1+1)));
break;
case PRE:
(void)fatal("checkpage(): PRE occurs within file");
break;
case POST:
break;
case POST_POST:
(void)fatal("checkpage(): POST_POST with no preceding POST");
break;
default:
if (command >= FONT_00 && command <= FONT_63)
(void)setfntnm((INT32)(command - FONT_00));
else if (command >= SETC_000 && command <= SETC_127)
(void)checkchldd((BYTE)(command-SETC_000));
else
{
(void)sprintf(message,"checkpage(): %d is an undefined command",
command);
(void)fatal(message);
}
break;
}
}
}